<?php
class Back_EquipesController extends Osml_Controller_Admin_Action
{

    public function indexAction()
    {
        $model = new Back_Model_Equipes();
        $select = new Zend_Db_Table_Select($model->_getMapper()->_getTable());
        
        $form = null;
        
        $this->view->tableIdField = 'id_equipe';
        $this->view->tableSelect = $select;
        $this->view->tableHeader = array(
            'id_equipe' => array(
                'name' => 'id', 
                'link' => array(
                    'action' => 'editer'
                )
            ), 
            'nom' => array(
                'name' => __("Nom"), 
                'link' => array(
                    'action' => 'editer'
                )
            ), 
            "capitaine" => __("Capitaine")
        );
        
        /*
         * Thierry BROUARD (BIIS) callback = array( $objet, $method ) link =
         * array( action [,controller[,module]] ) ou array( 'callback' => array(
         * $objet, $method ) )
         */
        $this->view->tableOptions = array(
            'callback' => array(
                $this, 
                '_transformRowsCallback'
            ),  // Transformation callback
            'link' => array(
                'action' => 'voir'
            ), 
            'pageNumber' => (int) $this->_getParam('page', 1), 
            'pageItemPerPage' => (int) $this->_getParam('par', 10), 
            'form' => $form
        );
    }

    public function editerAction()
    {
        $requete = $this->getRequest();
        $id = $requete->getParam("id", 0);
        $model = new Back_Model_Equipes($id);
        
        $utilisateurModel = new Back_Model_Utilisateurs();
        $utilisateurs = $utilisateurModel->listerPourSelect(true, "prenomNom");
        $options['utilisateurs'] = $utilisateurs;
        
        $form = new Back_Form_Equipes('Formulairejndpro', $options);
        
        if ($requete->isPost()) {
            $datas = $requete->getPost();
            
            $membresEquipe = $datas['membres'];
            unset($datas['membres']);
            $remplacantsEquipe = $datas['remplacants'];
            unset($datas['remplacants']);
            $reservistesEquipe = $datas['reservistes'];
            unset($datas['reservistes']);
            
            
            if ($form->isValid($datas)) {
                $date = date(Jnd_Global_Constantes::FORMAT_DATE_BASE);
                $flagCreation = false;
                if (intval($id) > 0) {
                    $model->charger($id);
                    $model->setOptions($datas);
                    
                    // L'équipe existe déjà on supprime toutes les liaisons
                    $flagVidage = Back_Model_UtilisateurEquipe::vidageParEquipe($id);
                    $this->_insertionMembres($id, $membresEquipe);
                    $this->_insertionMembres($id, $remplacantsEquipe, "remplacants");
                    $this->_insertionMembres($id, $reservistesEquipe, "reservistes");
                } else {
                    $model->setOptions($datas);
                    $flagCreation = true;
                }
                
                $resultat = $model->sauver();
                $id = $model->getId();
                
                if ($flagCreation) {
                    $this->_insertionMembres($id, $membresEquipe);
                    $this->_insertionMembres($id, $remplacantsEquipe, "remplacants");
                    $this->_insertionMembres($id, $reservistesEquipe, "reservistes");
                }
                
                return $this->_helper->redirector('index');
            }
        } elseif ($requete->isGet()) {
            if ($id > 0) {
                $model->charger($id);
                $datas = $model->toArray();
                $datas['membres'] = $model->getMembres();
                $datas['remplacants'] = $model->getRemplacants();
                $datas['reservistes'] = $model->getReservistes();
                $form->populate($datas);
            }
        }
        $this->view->form = $form;
        $this->view->model = $model;
    }

    /**
     *
     * @see Jnd_Controller_Action::_transformRowsCallback()
     */
    public function _transformRowsCallback( $row, $view )
    {}
    
    private function _insertionMembres($idEquipe, $listeMembres, $type="membres") {
        foreach( $listeMembres as $idUtilisateur) {
            $liaison = new Back_Model_UtilisateurEquipe();
            $liaison->setIdUtilisateur($idUtilisateur);
            $liaison->setIdEquipe($idEquipe);
            $liaison->setType($type);
            $liaison->sauver();
        }
    }
}

